﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
  
    public class Logo : ILogo
    {
        private ClienteDAO clienteDAO = null;
        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }
        }

        private DistritoDAO distritoDAO = null;
        private DistritoDAO DistritoDAO
        {
            get
            {
                if (distritoDAO == null)
                    distritoDAO = new DistritoDAO();
                return distritoDAO;
            }
        }

        public Cliente CrearCliente(string dni, string nombre, string direccion, string correo, int distrito)
        {
            Distrito distritoExistente = DistritoDAO.Obtener(distrito);
            Cliente clienteACrear = new Cliente()
            {
                Dni = dni,
                Nombre = nombre,
                Direccion = direccion,
                Correo = correo,
                Distrito = distritoExistente
            };
            return ClienteDAO.Crear(clienteACrear);
        }

        public Cliente ObtenerCliente(int codigo)
        {
            return ClienteDAO.Obtener(codigo);
        }

        public Cliente ModificarCliente(int codigo, string dni, string nombre, string direccion, string correo, int distrito)
        {
            Distrito distritoExistente = DistritoDAO.Obtener(distrito);
            Cliente clienteAModificar = new Cliente()
            {
                Codigo = codigo,
                Dni = dni,
                Nombre = nombre,
                Direccion = direccion,
                Correo = correo,
                Distrito = distritoExistente
            };
            return ClienteDAO.Modificar(clienteAModificar);
        }

        public void EliminarCliente(int codigo)
        {
            Cliente clienteExistente = ClienteDAO.Obtener(codigo);
            ClienteDAO.Eliminar(clienteExistente);
        }

        public List<Cliente> ListarCliente()
        {
            return ClienteDAO.ListarTodos().ToList();
        }


    }
}
